package fms.core;

import fms.acarsMsgProcessUtil.DownLinkDatagramHeader;
import fms.acarsMsgProcessUtil.RawDatagram;
import fms.util.ObjectUtil;
import org.apache.log4j.Logger;

public class AutoPosFilter implements IFilter {
    private Logger logger = Logger.getLogger(AutoPosFilter.class);

    // 判断当前报文是否是自动位置请求报文
    public boolean isFilter(String aContent) {
//        logger.debug("[飞机自动下发航路点请求报文过滤] 开始进行报文过滤...");
        if (aContent.contains("<?xml") && aContent.contains("<request>")) {
            return false;
        }else if (aContent.contains("<?xml") && aContent.contains("FMS")) {
            return false;
        }  else {
            DownLinkDatagramHeader msgHeader = null;
            try {
                msgHeader = DownLinkDatagramHeader.Parse(RawDatagram.GetHeader(aContent));
            } catch (Exception e) {
                logger.error("报文头解析出错！" + e.getMessage() + "\r\n出错报文为：\r\n" + aContent);
                // 报头解析异常，该报文不是正规的acars报文，可略过
                return false;
            }
            if (!ObjectUtil.isBlank(msgHeader.getSmi()) && msgHeader.getSmi().equals("DEP") &&
                    !ObjectUtil.isBlank(msgHeader.getType()) && msgHeader.getType().equals("OFF")) {
                logger.debug("[飞机自动下发航路点请求报文过滤] 是自动位置请求报文...");
                return true;
            } else {
//                logger.debug("[飞机自动下发航路点请求报文过滤] 不是自动位置请求报文...");
                return false;
            }
        }
    }
}